// 定义store 仓库

// 01: 安装redux:  npm i redux

// 02: 使用redux 中的一个方法 createStore 方法
import {
    legacy_createStore as createStore,
    combineReducers,
    applyMiddleware,
    compose
} from 'redux';

// 引入redux-thunk
import reduxthunk from 'redux-thunk';

// import reducer from './reducers/reducer';
// import reducer1 from './reducers/reducer1';
// import reducer2 from './reducers/reducer2';

// 注意: 当项目中的reducer模块较多的时候, 这样导致引入的模块太多, 代码有点冗余
// 可以使用webpack的方法,统一对reducer模块的导入做一个处理, 实现自动全部导入
//  require.context('要处理的文件目录',是否递归导入文件值为boolean, 匹配的文件)
const files = require.context('./reducers', false, /\.js$/);
// console.log('files', files.keys());
const result = {};
files.keys().forEach(item => {
    // console.log(item.lastIndexOf('.'));
    // console.log(item.lastIndexOf('/'));
    const key = item.substring(item.lastIndexOf('/') + 1, item.lastIndexOf('.'))
    // console.log(key);
    // 获取对应的路径item,导出的函数(也就是export default 导出的函数)
    // console.log(files(item).default);
    result[key] = files(item).default
})

// console.log(result);





// 04: 使用createStore 方法创建store 仓库
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

const store = createStore(
    combineReducers(result),
    // 配置中间件 reduxthunk,这样就可以异步派发修改state得任务了
    composeEnhancers(applyMiddleware(reduxthunk)));

// 05: 导出store
export default store



